package com.eastfair.imaster.vo;

import cn.afterturn.easypoi.excel.annotation.Excel;
import com.baomidou.mybatisplus.annotation.TableField;
import com.eastfair.annotation.annotation.languageswith.LanguageField;
import com.eastfair.annotation.annotation.vo.VoInfo;
import com.eastfair.auth.vo.UserAccountVo;
import com.eastfair.vo.VoGroupClass;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.Size;
import java.io.Serializable;
import java.util.List;

import static com.baomidou.mybatisplus.annotation.SqlCondition.LIKE;

/**
 * <p>
 * 实体类
 * 展商
 * </p>
 *
 * @author ligang
 * @since 2021-09-07
 */
@Data
public class ExhibitorVo implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键id
     */
    @ApiModelProperty(value = "主键id")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private Long id;


    /**
     * 项目ID
     */
    @ApiModelProperty(value = "项目ID")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private Long projectId;

    /**
     * 当前发布到的展会ID
     */
    @ApiModelProperty(value = "当前发布到的展会ID")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private Long exhibitionId;

    /**
     * 公司ID
     */
    @ApiModelProperty(value = "公司ID")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private Long companyId;

    /**
     * 展馆号
     */
    @ApiModelProperty(value = "展馆号")
    @Size(max = 255, message = "展馆号长度不能超过255")
    @TableField(value = "exhibition_floor", condition = LIKE)
    @Excel(name = "展馆号")
    private String exhibitionFloor;

    /**
     * 展位号
     */
    @ApiModelProperty(value = "展位号")
    @Size(max = 255, message = "展位号长度不能超过255")
    @TableField(value = "exhibition_booth_number", condition = LIKE)
    @Excel(name = "展位号")
    private String exhibitionBoothNumber;

    /**
     * 展位区域
     */
    @ApiModelProperty(value = "展位区域")
    @Size(max = 255, message = "展位区域长度不能超过255")
    @TableField(value = "exhibition_booth_part", condition = LIKE)
    @Excel(name = "展位区域")
    private String exhibitionBoothPart;

    /**
     * 参展次数
     */
    @ApiModelProperty(value = "参展次数")
    @TableField(value = "attend_times")
    @Excel(name = "参展次数")
    private Integer attendTimes;



    /**
     * 展商下的员工
     */
    @ApiModelProperty(value = "展商下的员工")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private List<ExhibitorEmployeeVo> exhibitorEmployeeVoList;

    /**
     * 公司信息
     */
    @ApiModelProperty(value = "公司信息")
    @VoInfo(groups = {ImasterVoGroupClass.exhibitorDetailOfReadOnly.class})
    private CompanyVo companyVo;

    /**
     * 公司管理员信息
     */
    @ApiModelProperty(value = "公司管理员信息")
    @VoInfo(groups = {ImasterVoGroupClass.exhibitorDetailOfReadOnly.class})
    private UserAccountVo userAccountVo;
}
